<?php
/**
 * 资源文件工具类
 */

namespace backend\utils;

use yii;

class XResources
{
    /**
     * 返回系统默认CSS
     * @return mixed
     */
    public static function getCssSystem()
    {
        $contents = @file_get_contents(Yii::getAlias('@frontend') . '/static/css/site.css');
        return $contents;
    }

    /**
     * 保存系统默认CSS
     * @param $data
     * @return bool
     */
    public static function saveCssSystem($data)
    {
        return file_put_contents(Yii::getAlias('@frontend') . '/static/css/site.css', $data);
    }

    /**
     * 返回自定义CSS列表
     * @return array
     */
    public static function getCssList()
    {
        return static::getList(Yii::getAlias('@frontend') . '/web/css/');
    }

    /**
     * 新建自定义CSS
     * @param $name
     * @param $data
     * @return mixed
     */
    public static function saveCss($name, $data)
    {
        $filename = $name;
        if (!file_exists(Yii::getAlias('@frontend') . '/web/css/' . $filename)) {
            $myfile = fopen(Yii::getAlias('@frontend') . '/web/css/' . $filename, "w");
        }
        return file_put_contents(Yii::getAlias('@frontend') . '/web/css/' . $filename, $data);
    }

    /**
     * 返回自定义CSS
     * @param string $name
     * @return mixed
     */
    public static function getCssContent($name)
    {
        $contents = @file_get_contents(Yii::getAlias('@frontend') . '/web/css/' . $name);
        return $contents;
    }

    /**
     * 删除自定义CSS
     * @param $filename
     * @return bool
     */
    public static function deleteCss($filename)
    {
        return static::delete(Yii::getAlias('@frontend') . '/web/css/' . $filename);
    }

    /**
     * 返回系统默认图片
     * @return array
     */
    public static function getImagesSystemList()
    {
        return static::getList(Yii::getAlias('@frontend') . '/static/images/', ['jpg', 'gif', 'png', 'jpeg']);
    }

    /**
     * 删除系统默认图片
     * @param $filename
     * @return bool
     */
    public static function deleteImagesSystem($filename)
    {
        return static::delete($filename);
    }

    /**
     * 返回自定义图片
     * @return array
     */
    public static function getImagesList()
    {
        return static::getList(Yii::getAlias('@frontend') . '/web/images/', ['jpg', 'gif', 'png', 'jpeg']);
    }

    /**
     * 返回自定义JS列表
     * @return array
     */
    public static function getJsList()
    {
        return static::getList(Yii::getAlias('@frontend') . '/web/js/', ['js']);
    }

    /**
     * 保存js
     * @param $name
     * @param $data
     * @return mixed
     */
    public static function saveJs($name, $data)
    {
        $filename = $name;
        if (!file_exists(Yii::getAlias('@frontend') . '/web/js/' . $filename)) {
            $myfile = fopen(Yii::getAlias('@frontend') . '/web/js/' . $filename, "w");
        }
        return file_put_contents(Yii::getAlias('@frontend') . '/web/js/' . $filename, $data);
    }

    /**
     * 返回JS
     * @param string $name
     * @return mixed
     */
    public static function getJsContent($name)
    {
        $contents = @file_get_contents(Yii::getAlias('@frontend') . '/web/js/' . $name);
        return $contents;
    }

    /**
     * 删除JS
     * @param $filename
     * @return bool
     */
    public static function deleteJs($filename)
    {
        return static::delete(Yii::getAlias('@frontend') . '/web/js/' . $filename);
    }

    /**
     * 删除文件
     * @param $path string 物理路径
     * @return bool
     */
    public static function delete($path)
    {
        if (file_exists($path)) {
            return unlink($path);
        }
        return false;
    }

    /**
     * 获取目录下的ext文件
     * @param $path
     * @param array $ext
     * @return array|null
     */
    public static function getList($path, $ext = ['css'])
    {
        if (!file_exists($path)) {
            return null;
        }
        $file_list = [];
        if ($handle = opendir($path)) {
            $i = 0;
            while (false !== ($filename = readdir($handle))) {
                $file_ext = strtolower(pathinfo($path . $filename, PATHINFO_EXTENSION));
                if (in_array($file_ext, $ext)) {
                    $file_list[$i]['filename'] = $filename;
                    $file_list[$i]['basename'] = basename($path . $filename, '.' . $file_ext);
                    $file_list[$i]['ext'] = $file_ext;
                    $file_list[$i]['path'] = $path . $filename;
                    $file_list[$i]['datetime'] = date('Y-m-d H:i:s', filemtime($path . $filename));
                    $i++;
                }
            }
            closedir($handle);
        }
        return $file_list;
    }
}